package util;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.tomcat.dbcp.dbcp.BasicDataSource;

public class DBUtilOfServlet {
	private static BasicDataSource bds;
	static{
		/*<!--maxActive: 最大连接数量-->    
        <property name="maxActive" value="150"/>  
        <!--minIdle: 最小空闲连接-->    
        <property name="minIdle" value="5"/>  
        <!--maxIdle: 最大空闲连接-->    
        <property name="maxIdle" value="20"/>  
        <!--initialSize: 初始化连接-->    
        <property name="initialSize" value="30"/>  
        <!-- 连接被泄露时是否打印 -->  
        <property name="logAbandoned" value="true"/>  
        <!--removeAbandoned: 是否自动回收超时连接-->    
        <property name="removeAbandoned"  value="true"/>  
        <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->    
        <property name="removeAbandonedTimeout" value="10"/>  
        <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->  
        <property name="maxWait" value="1000"/>  
        <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->  
        <property name="timeBetweenEvictionRunsMillis" value="10000"/>  
        <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->  
        <property name="numTestsPerEvictionRun" value="10"/>  
        <!-- 1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程-->  
        <property name="minEvictableIdleTimeMillis" value="10000"/> */ 
		String driverclass = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/blog_project";
		String user = "root";
		String password = "";
		int intMaxActive = 100;
		int intInitSize = 20;
		bds = new BasicDataSource();
		bds.setDriverClassName(driverclass);
		bds.setUrl(url);
		bds.setUsername(user);
		bds.setPassword(password);			
		bds.setMaxActive(intMaxActive);
		bds.setInitialSize(intInitSize);
	}
	
	    //2、创建连接
		public static  Connection getConnection() 
				throws SQLException{
			return bds.getConnection();
		}	
		
		//3、归还连接
		public static void close(Connection conn){
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
					/*throw new RuntimeException
					("归还连接错误！",e);*/
				}
			}
		}	
		
		//测试
		public static void main(String[] args) 
				throws SQLException {
			Connection conn = getConnection();
			System.out.println
			(conn.getClass().getName());
			close(conn);
			System.out.println("over");
		}	
	
}
